avl: guard against theoretical null pointer dereference
authorPetr Štetiar <[email protected]>
Wed, 20 Nov 2019 08:31:08 +0000 (09:31 +0100)
committerPetr Štetiar <[email protected]>
Sun, 24 Nov 2019 12:26:58 +0000 (13:26 +0100)
clang-10 analyzer reports following:

 avl.c:671:25: warning: Access to field 'parent' results in a dereference of a null pointer (loaded from field 'right')
     node->right->parent = parent;
           ~~~~~         ^

Which seems to be impossible to trigger via exported AVL public API, but
it could be probably trigerred by fiddling with the AVL tree node struct
members manually as they are exposed.

Signed-off-by: Petr Štetiar <[email protected]>
avl.c

diff --git a/avl.c b/avl.c
index 8d0bf65aaa5bdaaf83f0910465281a0542e6dfa1..79ea5c798b64dbde78e7a7e445ba84cfc6b7ec33 100644 (file)
--- a/avl.c
+++ b/avl.c
@@ -45,6 +45,7 @@
 #include <string.h>
 
 #include "avl.h"
+#include "assert.h"
 #include "list.h"
 
 /**
@@ -668,6 +669,7 @@ avl_delete_worker(struct avl_tree *tree, struct avl_node *node)
       return;
     }
 
+    assert(node->right);
     node->right->parent = parent;
 
     if (parent->left == node)